7.5 分组之时间戳的分组
如果分组的数据时时间戳,同时也希望按指定的时间戳频率做分组,需要使用到pd.Grouper()函数配合, 该是专门用来生成分组依据的工具,可以按索引,按列,按计算结果,时序中的频率等内容为依据进行分组。结构如下:
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.7.05 分组之时间戳的分组.xlsx" )
print (df)
for t ,d in df.groupby(by=pd.Grouper( key = "日期" , freq = "QS" )):
# for t ,d in df.groupby(by=df.日期.dt.month):
print (t)
print (d)
print ("-----------------------------")
返回:
日期 | 产品 | 购买金额 | |
---|---|---|---|
0 | 2023-03-30 08:00:00 | 93300.0 | 100 |
1 | 2023-05-27 08:00:00 | 93300.0 | 100 |
2 | 2023-11-30 08:00:00 | 93300.0 | 100 |
.. | ... | ... | ... |
597 | 2023-06-02 09:10:41 | 12027024.0 | 100 |
598 | NaT | 12027026.0 | 10 |
[599 rows x 3 columns]
2023/1/1
日期 | 产品 | 购买金额 | |
---|---|---|---|
28 | 2023-01-04 08:00:00 | 11153001.0 | 100 |
29 | 2023-01-04 08:00:00 | 11153001.0 | 100 |
146 | 2023-01-06 14:10:55 | 11403001.0 | 100 |
.. | ... | ... | ... |
547 | 2023-03-23 08:00:00 | 12027020.0 | 100 |
0 | 2023-03-30 08:00:00 | 93300.0 | 100 |
223 | 2023-03-30 11:08:22 | 11603002.0 | 0 |
[92 rows x 3 columns]
-----------------------------
2023/4/1
日期 | 产品 | 购买金额 | |
---|---|---|---|
225 | 2023-04-11 12:59:02 | 11603002.0 | 100 |
80 | 2023-04-13 11:06:42 | 11213001.0 | 100 |
356 | 2023-04-16 10:22:40 | 12023075.0 | 0 |
.. | ... | ... | ... |
333 | 2023-06-27 08:00:00 | 12023025.0 | 100 |
140 | 2023-06-28 10:36:21 | 11363001.0 | 100 |
[224 rows x 3 columns]
-----------------------------
2023/7/1
日期 | 产品 | 购买金额 | |
---|---|---|---|
381 | 2023-07-07 17:14:05 | 12027004.0 | 100 |
336 | 2023-07-10 19:47:54 | 12023025.0 | 10 |
337 | 2023-07-10 19:47:54 | 12023025.0 | 10 |
.. | ... | ... | ... |
232 | 2023-09-26 17:32:06 | 11603006.0 | 100 |
382 | 2023-09-27 10:48:52 | 12027004.0 | 1 |
[87 rows x 3 columns]
-----------------------------
2023/10/1
日期 | 产品 | 购买金额 | |
---|---|---|---|
236 | 2023-10-08 16:57:29 | 11613002.0 | 100 |
108 | 2023-10-10 13:58:56 | 11273012.0 | 100 |
455 | 2023-10-12 10:34:45 | 12027011.0 | 100 |
456 | 2023-10-12 10:34:45 | 12027011.0 | 100 |
563 | 2023-10-12 10:36:43 | 12027021.0 | 100 |
.. | ... | ... | ... |
573 | 2023-12-30 11:25:23 | 12027021.0 | 70 |
468 | 2023-12-30 11:25:24 | 12027011.0 | 10 |
469 | 2023-12-30 11:25:24 | 12027011.0 | 90 |
574 | 2023-12-30 11:25:24 | 12027021.0 | 10 |
575 | 2023-12-30 11:25:24 | 12027021.0 | 90 |
[195 rows x 3 columns]
-----------------------------